package business.database.sqliteMaescorp

import groovy.sql.Sql
import java.util.HashMap;
import java.util.List;

/**
 * DAO para la tabla Corp
 * @author Administrador
 *
 */
public class CorpDataDAO {
	
	private def Sql sqlite;
	
	/**
	 * Inicializamos la clase con la instance de SQL
	 * @param sql
	 */
	public CorpDataDAO(Sql sql) {
		sqlite = sql;
	}
	
/**
 * Crea la tabla
 */
	public void create() {
		sqlite.execute("CREATE TABLE  IF NOT EXISTS CorpData (idCorp integer, contextWordCount integer);");
		sqlite.execute("CREATE INDEX idx_idcorpdata ON CorpData(idCorp);");
	}
	
	/**
	 * Inserta un corp
	 * @param idcorp
	 * @param corp
	 */
	public void insert(int idcorp, int contextWordCount) {
		sqlite.execute("insert into CorpData values (${idcorp},${contextWordCount})");
	}
	
	/**
	 * Obtiene el numero de palabras distintoas del corp
	 * @param idcorp identificador del corp
	 * @return corp
	 */
	public Integer selectContextWordCount(int idcorp) {
		
		String sqlQuery = "Select min(contextWordCount) from corpdata where idcorp = ${idcorp}"
		def corp = sqlite.firstRow(sqlQuery)
					
		if ((corp != null) && (corp[0] != null))
			return corp[0]
		else return null;
	}
	
	/**
	* Obtiene el numero de palabras con repetidas del corp
	* @param idcorp identificador del corp
	* @return numero de palabras del contexto
	*/
   public Integer selectContextWordCountWithRepeated(int idcorp) {
	   
	   String sqlQuery = "Select max(contextWordCount) from corpdata where idcorp = ${idcorp}"
	   def corp = sqlite.firstRow(sqlQuery)
				   
	   if ((corp != null) && (corp[0] != null))
		   return corp[0]
	   else return null;
   }
	
	/**
	* Borra el corp
	* @param idcorp
	*/
   public void delete(int idcorp) {
	   sqlite.execute("delete from corpdata where idcorp = ${idcorp}");
   }
   
		
	
}
